import os

"""tortoise-orm数据库配置"""
TORTOISE_ORM = {
    "connections": {
        "default": {
            'engine': 'tortoise.backends.mysql',  # MySQL or Mariadb
            'credentials': {  # 连接参数
                'host': os.environ.get('DB_HOST', '127.0.0.1'),  # 数据库IP/域名地址
                'port': int(os.environ.get('DB_PORT', 3306)),  # 端口
                'user': os.environ.get('DB_USER', 'fastchat'),  # 连接账户
                'password': os.environ.get('DB_PASSWORD', 'fastchat'),  # 连接密码
                'database': os.environ.get('DB_DATABASE', 'fastchat'),  # 数据库
                'charset': os.environ.get('DB_CHARSET', 'utf8mb4'),  # 编码
                'minsize': int(os.environ.get('DB_POOL_MINSIZE', 1)),  # 连接池中的最小连接数
                'maxsize': int(os.environ.get('DB_POOL_MAXSIZE', 5)),  # 连接池中的最大连接数
                "echo": bool(os.environ.get('DEBUG', True))  # 执行数据库操作时，是否打印SQL语句
            }
        }
    },
    'apps': {  # 默认所在的应用目录
        'models': {  # 数据模型的分组名
            'models': ['application.apps.users.models', 'application.apps.role.models', 'aerich.models'],  # 模型所在目录文件的导包路径[字符串格式]
            'default_connection': 'default',  # 上一行配置中的模型列表的默认连接配置
        }
    },
    # 时区设置
    # 当use_tz=True，当前tortoise-orm会默认使用当前程序所在操作系统的时区，
    # 当use_tz=False时，当前tortoise-orm会默认使用timezone配置项中的时区
    'use_tz': False,
    'timezone': os.environ.get('APP_TIMEZONE', 'Asia/Shanghai')
}
"""sms"""
SMS = {
    'CODE_LENGTH': int(os.environ.get('SMS_CODE_LENGTH', 6)),  # 验证码长度
    'EXPIRE_TIME': int(os.environ.get('SMS_EXPIRE_TIME', 60 * 5)),  # 验证码过期时间(秒)
    'TEMPLATE_ID': os.environ.get('SMS_TEMPLATE_CODE', ''),  # 短信模板ID
    'ACCESS_KEY_ID': os.environ.get('SMS_ACCESS_KEY_ID', ''),  # 短信服务商的access_key_id
    'ACCESS_KEY_SECRET': os.environ.get('SMS_ACCESS_KEY_SECRET', ''),  # 短信服务商的access_key_secret
    'SIGN_NAME': os.environ.get('SMS_SIGN_NAME', ''),  # 短信签名
    'REGION': os.environ.get('SMS_REGION', 'cn-hangzhou')  # 短信服务商的区域
}

"""redis"""
REDIS = {
    'host': os.environ.get('REDIS_HOST', '127.0.0.1'),  # 数据库地址
    'port': os.environ.get('REDIS_PORT', 6379),        # 数据库端口
    'db': os.environ.get('REDIS_DB', 0),               # 数据库名
    'username':  os.environ.get('REDIS_USERNAME', ''),  # 用户名
    'password':  os.environ.get('REDIS_PASSWORD', ''),  # 密码
}

"""aliyun"""
ALIYUN = {
    'access_key_id': os.environ.get('ALIYUN_ACCESS_KEY_ID', ''),  # 阿里云access_key_id
    'access_key_secret': os.environ.get('ALIYUN_ACCESS_KEY_SECRET', ''),  # 阿里云access_key_secret
}

"""wechat"""
WECHAT = {
    'app_id': os.environ.get('WECHAT_APP_ID', 'wx3473e92376c77f89'),  # 微信公众号app_id
    'app_secret': os.environ.get('WECHAT_APP_SECRET', '65fb6bd4ded34eab0a305290ea188934'),  # 微信公众号app_secret
    "mch_id": os.environ.get('WECHAT_MCH_ID', '1709463138'),  # 微信支付商户号
    "mch_serial_no": os.environ.get('WECHAT_MCH_SERIAL_NO', '3889282E1012D631B1649FF9F6AB165CC3FE1193'),  # 微信支付商户xCert证书序列号
    "mch_api_key": os.environ.get('WECHAT_MCH_API_KEY', 'TingRainWater1850029146948212345'),  # 微信支付商户密钥
    "notify_url": os.environ.get('WECHAT_NOTIFY_URL', 'http://127.0.0.1:8000/api/v1/wechat/notify'),  # 微信支付异步通知地址
    "privater_key_path": os.environ.get('WECHAT_PRIVATER_KEY_PATH', 'application/apps/cert/water_apiclient_key.pem'),  # 微信支付私钥路径
    # 获取预支付单号
    "prepay_id_url": os.environ.get('WECHAT_PREPAY_ID_URL', 'https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi'),
    # 生成签名
    "sign_url": os.environ.get('WECHAT_SIGN_URL', '/v3/pay/transactions/jsapi'),
    # 微信支付订单查询
    "order_query_url": os.environ.get('WECHAT_ORDER_QUERY_URL', 'https://api.mch.weixin.qq.com/pay/orderquery'),
    # 微信支付退款
    "refund_url": os.environ.get('WECHAT_REFUND_URL', 'https://api.mch.weixin.qq.com/secapi/pay/refund'),
    # 微信支付退款查询
    "refund_query_url": os.environ.get('WECHAT_REFUND_QUERY_URL', 'https://api.mch.weixin.qq.com/pay/refundquery'),
    # 微信支付下载对账单
    "download_bill_url": os.environ.get('WECHAT_DOWNLOAD_BILL_URL', 'https://api.mch.weixin.qq.com/pay/downloadbill'),
    # 微信支付企业付款
    "transfer_url": os.environ.get('WECHAT_TRANSFER_URL', 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'),
    # 微信支付企业付款查询
    "transfer_query_url": os.environ.get('WECHAT_TRANSFER_QUERY_URL', 'https://api.mch.weixin.qq.com/mmpaymkttransfers/gettransferinfo'),
    # 微信登录
    "login_url": os.environ.get('WECHAT_LOGIN_URL', 'https://api.weixin.qq.com/sns/jscode2session'),
    # 微信支付统一下单
    "unified_order_url": os.environ.get('WECHAT_UNIFIED_ORDER_URL', 'https://api.mch.weixin.qq.com/pay/unifiedorder'),
    # 微信支付关闭订单
    "close_order_url": os.environ.get('WECHAT_CLOSE_ORDER_URL', 'https://api.mch.weixin.qq.com/pay/closeorder'),
    # 微信支付申请退款
    "refund_apply_url": os.environ.get('WECHAT_REFUND_APPLY_URL', 'https://api.mch.weixin.qq.com/secapi/pay/refund'),
    # 微信支付授权码查询openid
    "auth_code_to_openid_url": os.environ.get('WECHAT_AUTH_CODE_TO_OPENID_URL', 'https://api.weixin.qq.com/sns/oauth2/access_token'),
    # 微信支付授权码查询用户信息
    "auth_code_to_user_info_url": os.environ.get('WECHAT_AUTH_CODE_TO_USER_INFO_URL', 'https://api.weixin.qq.com/sns/userinfo'),
    # 微信支付授权码换取公众号/小程序用户的session_key
    "auth_code_to_session_key_url": os.environ.get('WECHAT_AUTH_CODE_TO_SESSION_KEY_URL', 'https://api.weixin.qq.com/sns/jscode2session'),
}

"""jwt"""
JWT = {
    'secret_key': os.environ.get('JWT_SECRET_KEY', 'f71GwVJZzs9Hnv%MaFNbiDxmU/YqYLgEcaS1-/38^zLwk-&SdCILqVo!bLTz6ifX'), # JWT加密密钥
    'algorithm': os.environ.get('JWT_ALGORITHM', 'HS256'),  # 加密算法
    'access_token_expire_time': 30 * 24 * 60,  # 访问令牌过期时间(分钟) 1天
}
